﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;
using BadgeManager.Controller;
using BadgeManager.Model;

namespace Badge_Manager.View
{
    public partial class frmPannelloControllo : Form
    {
        private Utente Utente;
        private List<Attivita> listaAttivita;

        public frmPannelloControllo(Utente Utente)
        {
            InitializeComponent();
            this.Utente = Utente;
            FormattaGriglia();
            CaricaCorsi();
        }

        private void FormattaGriglia()
        {
            gridCorsi.Columns.Add("Id", "Id");
            gridCorsi.Columns.Add("Descrizione", "Descrizione");
            gridCorsi.Columns.Add("Stanza", "Stanza");
            gridCorsi.Columns.Add("SenzaFine", "Indeterminato");
            gridCorsi.Columns.Add("Corso", "Corso");

            gridCorsi.Columns["Id"].Visible = false;
            gridCorsi.Columns["Descrizione"].Visible = false;
            gridCorsi.Columns["Stanza"].Visible = false;
            gridCorsi.Columns["SenzaFine"].Visible = false;
        }

        private void FormattaGrigliaAlunni()
        {
            if (gridAlunniCorso.DataSource != null)
            {
                gridAlunniCorso.Columns["Id"].Visible = false;
                gridAlunniCorso.Columns["Tessera"].Visible = false;
                gridAlunniCorso.Columns["Note"].Visible = false;
            }
        }

        private void CaricaCorsi()
        {
            listaAttivita = new List<Attivita>();
            listaAttivita = new ctrlAttivita(null)
                .SelezionaTutto(DateTime.MinValue, DateTime.Now.Date);

            foreach (Attivita a in listaAttivita)
            {
                gridCorsi.Rows.Add(
                    a.Id,
                    a.Descrizione,
                    a.Stanza,
                    a.SenzaFine,
                    a.ToString()
                    );
            }
            //gridCorsi.DataSource = null;
            //gridCorsi.DataSource = listaAttivita;
            //FormattaGriglia();
            if (gridCorsi.Rows.Count > 0)
            {
                gridCorsi.Rows[0].Selected = true;
            }
        }

        private void DettagliCorso(Attivita Attivita)
        {
            if (Attivita.Corso != null)
            {
                lblNomeCorso.Text = "" + Attivita.Corso.Nome;
                lblDataInizio.Text = "" + Attivita.Corso.DataInizio.ToString("D");
                if (Attivita.Corso.DataFine != null)
                    lblDataFine.Text = "" + ((DateTime)Attivita.Corso.DataFine).ToLongDateString();
                lblNumOre.Text = "" + Attivita.Corso.NumeroOre;
            }
            else
            {
                lblNomeCorso.Text = "" + Attivita.ToString();
                lblDataInizio.Text = "";
                lblDataFine.Text = "Indeterminato";
                lblNumOre.Text = "";
            }
            if (Attivita.Stanza != null)
                lblAula.Text = "" + Attivita.Stanza.Numero;

            ElencoAlunniDelCorso(Attivita);

            pnlDettagli.Visible = true;
        }

        private void ElencoAlunniDelCorso(Attivita Attivita)
        {
            List<Persona> AlunniNelCorso = new List<Persona>();
            AlunniNelCorso = new ctrlPersona().SelectAlunniCorsoAttivitàAttuale(Attivita.Id);

            gridAlunniCorso.DataSource = null;
            gridAlunniCorso.DataSource = AlunniNelCorso;
            FormattaGrigliaAlunni();
        }

        private void gridCorsi_SelectionChanged(object sender, EventArgs e)
        {
            if (listaAttivita.Count > 0)
            {
                Attivita attivitaSelezionata = listaAttivita.Find(delegate(Attivita a)
                { return a.Id == (Guid)gridCorsi.SelectedRows[0].Cells["Id"].Value; });

                DettagliCorso(attivitaSelezionata);
            }
        }

        private void Cerca(string corso)
        {
            gridCorsi.DataSource = new ctrlAttivita(null).SelezionaTutto(DateTime.MinValue, DateTime.Now.Date, corso);
            FormattaGriglia();
        }

        private void txtCercaCorso_TextChanged(object sender, EventArgs e)
        {
            //Cerca(txtCercaCorso.Text);
        }
    }
}